
#ifndef PROTA_CUSTOM_FOG
#define PROTA_CUSTOM_FOG



float _FogEnabled;
float4 _FogColor;
float _FogStart;
float _FogEnd;
float _FogExpo;
float4 Prota_ApplyFog(float4 mainTex, float4 clipSpacePos)
{
    if(!_FogEnabled)
    {
        return mainTex;
    }
    
    float distanceNDC = -clipSpacePos.z / clipSpacePos.w;
    float distance = distanceNDC + 1;  // ? 但这个结果是对的.
    float fogFactor = clamp((distance - _FogStart) / (_FogEnd - _FogStart), 0, 1);
    fogFactor = pow(fogFactor, _FogExpo);
    float3 colorApplyFog = lerp(mainTex.rgb, _FogColor.rgb, fogFactor * _FogColor.a);
    mainTex.rgb = colorApplyFog;
    
    return mainTex;
}

#endif
